package lx13;

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.util.Arrays;

public class Get_constructor {
    public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException {
        //反射
        //获取构造方法

        //获取class字节码文件对象
        Class cls = Class.forName("lx13.sstu");

        //获取public的构造函数
        Constructor[] cons = cls.getConstructors();

        for(Constructor con : cons) System.out.println(con);

        //Constructor -> 构造函数
        //Constructor con = cls.getConstructor(String.class,int.class);获取public的构造函数
        Constructor con = cls.getDeclaredConstructor(String.class,int.class);//获取所有的构造函数

        System.out.println(con);
        System.out.println(con.getModifiers());//获取修饰符
        System.out.println(Arrays.toString(con.getParameters()));//获取参数

        //暴力反射：表示临时取消权限修饰符校验
        con.setAccessible(true);
        sstu s = (sstu) con.newInstance("mjx",23);//此构造方法为私有private
        System.out.println(s);
    }
}
